package Package.Example.CopyASingleLevelFolder;

import java.io.*;


public class CopyASingleLevelFolder {
    public static final void CopyASingleLevelFolder() throws IOException {
        //    1. 创建数据源目录File对象，路径是E:\itcast
//2. 获取数据源目录File对象的名称
//3. 创建目的地目录File对象，路径由(模块名+第2步获取的名称)组成
//4. 判断第3步创建的File是否存在，如果不存在，就创建
//5. 获取数据源目录下所有文件的File数组
//6. 遍历File数组，得到每一个File对象，该File对象，其实就是数据源文件
//7. 获取数据源文件File对象的名称
//8. 创建目的地文件File对象，路径由(目的地目录+第7步获取的名称)组成
//9. 复制文件
//由于不清楚数据源目录下的文件都是什么类型的，所以采用字节流复制文件
//采用参数为File的构造方法
        File srcFolder = new File("D:\\inserts");
        String srcFolderName = srcFolder.getName();
        File dest=new File("D:\\myCharStream");
        dest.mkdir();
        File destFolder = new File("D:\\myCharStream", srcFolderName);
        if (destFolder.exists()) {

        }else {
            destFolder.mkdir();
        }
        File[] listFiles = srcFolder.listFiles();
        for (File srcFile : listFiles) {
//            System.out.println(srcFile);
            String srcFileName = srcFile.getName();
            File destFile = new File(destFolder, srcFileName);
            System.out.println(destFile);
            copyFile(srcFile, destFile);
        }

    }

    private static void copyFile(File srcFile, File destFile) throws IOException {
        System.out.println(destFile);
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
        byte[] bys = new byte[1024];
        int len;
        while ((len = bis.read(bys)) != -1) {
            bos.write(bys, 0, len);
        }
        bis.close();
        bos.close();
    }


}
